<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<title>index</title>
	<script type="text/javascript" charset="utf-8" src="/plug-in/jquery-3.1.0.min.js"></script>
	<script type="text/javascript" charset="utf-8" src="/plug-in/layer-v2.4/layer/layer.js"></script>
	<script type="text/javascript" charset="utf-8" src="/plug-in/hprose/hprose.js"></script>
	<script type="text/javascript" charset="utf-8" src="/plug-in/cnynld.hprose..js"></script>
	<script type="text/javascript" charset="utf-8" src="/plug-in/vue.min.js"></script>
	<style>
		*{ margin: 0; padding: 0; }
		ul, ol, li { margin: 6px; }
		html, body { height: 100%; }
		p {  margin: 50px 20px;  }
		ol{list-style-type:none;counter-reset:sectioncounter; margin: 0 0 30px 0;}
		ol li:before {  content:counter(sectioncounter) "、";  counter-increment:sectioncounter;  }

		.class-a {  font-size: 30px;  }
	</style>

</head>

<body style="overflow: hidden">

	<div style="widht:100%;height: 100%;">
		<div style="float:left;width:49%;height: 100%;overflow: auto;" :class="{ 'class-a': bodys }":style="{ color: bodycolor }">
			<b style="margin: 0px 0px 0px 20px;font-size: 50px;">演示：</b></br></br>
			nodejs:<a href="http://nodejs.cn/doc/node/" target="_blank">http://nodejs.cn/doc/node/，，注：推荐6.9.1，不解释!!!!IDE用WebStorm...</a></br></br>
			vue具体请看:<a href="http://cn.vuejs.org/guide/" target="_blank">http://cn.vuejs.org/guide/</a></br></br>
			mongodb-nodejs:<a href="http://mongodb.github.io/node-mongodb-native/2.2/api/" target="_blank">http://mongodb.github.io/node-mongodb-native/2.2/api/</a></br></br>
			hprose-node.js:<a href="https://github.com/hprose/hprose-nodejs/wiki" target="_blank">https://github.com/hprose/hprose-nodejs/wiki</a></br></br>
			hprose-javascript:<a href="https://github.com/hprose/hprose-js/wiki" target="_blank">https://github.com/hprose/hprose-js/wiki</a></br></br>
			<a href="/base/user/init" target="_blank">推送、数据库操作、自定义路由请点这里</a></br></br>


			<p> <b>我只是测试下velocity参数传递而已。。</b></br> velocity.params.a:$a </br> velocity.params.b:$b</p>


			<p>
				<b>看着不舒服?</b></br>
				<button @click="bodys = !bodys ">{{bodys ? "字体小点" : "字体大点"}}</button>
				<button @click="color_change">{{bodycolor == 'red' ? "黄色??" : "红色??"}}</button>
			</p>

			<p>
				<b>隐藏、显示、禁用、启用、有、没有</b></br>
				<button :disabled="bj.d" v-show="bj.s" v-if="bj.i">我是那个悲剧的元素</button>
				<button v-else>你点没有干嘛????悲剧哥招你了???????</button></br></br>

				<button @click="bj.s = !bj.s; ">{{bj.s ? "隐藏" : "显示"}}</button>
				<button @click="bj.d = !bj.d">{{bj.d ? "启用" : "禁用"}}</button>
				<button @click="bj.i = !bj.i">{{bj.i ? "没有" : "有"}}</button>
			</p>

			<p>
				<b>绑定：</b></br>
				值:{{body}}</br>
				我是双向绑定：<input v-model="body"/></br>
				我是单向绑定：<input :value="body"/></br>
			</p>

			<p>
				<b>列表：(此处不加(track-by="$index")的话同一个元素不会显示，自己改删了试试)</b></br>
				添加:<input v-model="item" v-on:keyup.enter="item ? list.push(item): null"/>回车会么?<button @click="getlist">获取后台列表</button></br>
				<div style="widht:100%;height: 200px;">
					<div style="float:left;width:49%;height: 200px;overflow: auto;">
						<ul style="text-align:left;list-style-type:none;">
							<li v-for="i in list" track-by="$index">
								<span>{{ i }}</span>
								<button v-on:click="list.splice($index, 1)">X</button>
							</li>
						</ul>
					</div>
					<div style="float:left;width:50%;height: 200px; overflow: auto; border: 1px solid red;">
						<b>这是推送列表</b><a href="#" @click="showf">多开几个页面试试</a><br>
						<b v-for="i in msg" track-by="$index">{{i}}</b>
					</div>
				</div>
			</p>
		</div>

		<div style="float:left;width:50%;height: 100%; overflow: auto; border-left: 1px solid red;">
			<b style="margin: 0px 0px 0px 20px;font-size: 50px;">文档????别逗，，你觉得我会写???</b></br>
			<b style="color: red;font-size: 30px;">限定：</b></br>
			<ol style="color: red;">
				<li>
					<b style="font-size: 20px;">目录:</b>
					<ol>
						<li>后台代码必须放到src目录下</li>
						<li>外部lib必须放到lib目录下</li>
						<li>后台公共JS必须放到base/tools目录下</li>
						<li>前台代码必须放到view目录下</li>
						<li>前台公共JS必须放到plug-in目录下</li>
						<li>ps:请大家严格遵守</li>
					</ol>
				</li>
				<li>
					<b style="font-size: 20px;">后台文件命名:</b>
					<ol>
						<li>后台分为3种文件：controller、entity、service</li>
						<li>controller为http、hprose提供接口函数使用，命名格式为：模块名.controller.js</li>
						<li>entity为Mongodb集合实体，命名格式为：模块名.entity.js</li>
						<li>service为数据库操作、功能实现，命名格式为：模块名.service.js</li>
						<li>ps:未按规则实现则无法正确路由、操作数据库</li>
						<li>ps1:只有在servuce中可操作数据库，其他地方不行，，不信你试试!</li>
						<li>ps2:再次请大家严格遵守</li>
					</ol>
				</li>
				<li>
					<b style="font-size: 20px;">配置文件:</b>
					<ol>
						<li>系统配置文件位于config/system.config.js文件中</li>
						<li>若需要修改服务端口、mongodb连接等信息请修改系统配置文件</li>
						<li>当需要添加额外配置文件时也请放入config目录下，谢谢....</li>
					</ol>
				</li>
			</ol></br></br></br>

			<b style="font-size: 30px;">controller、路由：</b></br>
			<ol>
				<li>controller主要为http、hprose提供路由、接口函数使用</li>
				<li>路由地址默认为src目录到controller文件的目录转换，如：调用/src/base/user/user.controller.js中list方法 路由地址为:http://address:port/base.user.list或http://address:port/base/user/list</li>
				<li>修改路由地址请在controller文件中加入config对象，并设置config.route属性为路由地址，具体请看/src/base/user/user.controller.js</li>
				<li>默认情况下，框架将加载controller文件中所有函数并提供外部访问，当然，你也可以将你想公开的函数添加至controller.config.public属性中，具体查看/src/base/role/role.controller.js，注：添加后其他函数将不可进行外部访问</li>
				<li>当函数为http接口时，提供2个参数：params、callback，params为参数（如：前台传递参数a=1,b=2,c='111'，只需调用params.a、params.b...即可方法），callback为完成回调（当函数执行真正完成时，调用callback(页面路径, velocity模板参数)返回）</li>
				<li>当函数为http接口时，若不按规则调用callback，前台永远不会看到返回..</li>
				<li>当函数为hprose接口时，提供参数与http相同，但callback方法只需提供返回对象即可，此处callback也必须调用，否则客户端永远无法收到返回值</li>
				<li>ps:http接口只能作为页面输出，hprose主要提供接口调用</li>
				<li>ps1:具体请查看各模块controller</li>
			</ol>

			<b style="font-size: 30px;">entity、mongo数据库：</b></br>
			<ol>
				<li>请在entity中添加config对象，并设置config.cluster(集群名)，config.db(库名), config.col(文档名)</li>
				<li>建立实体请通过this.sys.db.get_entity('实体名')来建立，该处实体名与controller路由地址同理</li>
				<li>此处的entity是用来限定存储数据字段用的、在数据库添加、修改时，会将传入的对象中不属于entity中的所有字段、函数删除（所有函数都不会添加进数据库）</li>
				<li>数据库操作只能在service中操作，系统只为service中注入数据库操作对象(this.server = 当前模块数据库实例)，其他地方一律无法访问数据库(自己写例外！！！)</li>
				<li>数据库目前仅提供searchById、searchOne、search、save、remove、removeById函数，需要扩展可修改base/mongo_server.js(记得提交!)</li>
				<li>此处的save函数包含add和update，，具体可查看源码</li>
				<li>ps:此处不像其他框架（如：mongoose）一样限定entity中字段的类型(ORM???)是因为.......擦，，我回答这个干嘛，，你要限定那用sql去，要保持文档一致性靠的是人，限定了我也能给你乱插进去，在说本来就是no sql！！！！</li>
			</ol>

			<b style="font-size: 30px;">service：</b></br>
			<ol>
				<li>service在框架只可在controller、service调用</li>
				<li>需要调用其他service则必须设置inclucde对象，如：inclucde : { user:'base.user' } | inclucde: { index:null}，，第一种方法系统会设置inclucde.user为base.user.service，第二种会设置inclucde.index为index.service对象，，建议大家使用第一种，毕竟是相当于别名！$%^Y@#!!..遍不下去了..2016年10月22日 02:31:27</li>
				<li>ps: service干嘛的大家应该都清楚，请将具体功能实现、数据库操作都放到service中...请请请严格遵守!!</li>
			</ol>

			<b style="font-size: 30px;">消息推送：</b></br>
			<ol>
				<li>消息推送只可在controller、service调用</li>
				<li>调用方式: this.sys.tcp.push({xxx})</li>
			</ol>

			<b style="font-size: 30px;">hprose：</b></br>
			<ol>
				<li>js、html5 - 引用hprose.js、cnynld.hprose.js</li>
				<li>封装过，具体还是看view/index/index.js中的代码吧，，2016年10月22日 03:07:02</li>
			</ol>
		</div>
	</div>



</body>
<script type="text/javascript" charset="utf-8" src="/view/index/index.js"></script>
</html>